package entities;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.Embedded;
import javax.persistence.Id;

import com.googlecode.objectify.annotation.Cached;
import com.googlecode.objectify.annotation.Unindexed;

@Cached
public class AnalyticDataSource implements Serializable{
	
	@Id private String feedId = "";
	
	@Unindexed private String feedTitle = "";
	
	@Unindexed private int totalResult = 0;
	
	@Unindexed private int startIndex = 0;
	
	@Unindexed private int itemsPerPage = 100;
	
	@Unindexed private Date startDate = new Date();
	
	@Unindexed private Date endDate = new Date();
	
	@Unindexed private String tableName = "";
	
	@Unindexed private String tableId = "";
	
	@Unindexed private String webPropertyId = "";
	
	@Unindexed private String profileId = "";
	
	@Unindexed private String accountName = "";
	
	@Unindexed private List<String> dimension = new ArrayList<String>();
	
	@Unindexed private List<String> metric = new ArrayList<String>();
	
	@Embedded private List<AnalyticEntryRow> entries = new ArrayList<AnalyticEntryRow>();

	public String getFeedId() {
		return feedId;
	}

	public void setFeedId(String feedId) {
		this.feedId = feedId;
	}

	public String getFeedTitle() {
		return feedTitle;
	}

	public void setFeedTitle(String feedTitle) {
		this.feedTitle = feedTitle;
	}

	public int getTotalResult() {
		return totalResult;
	}

	public void setTotalResult(int totalResult) {
		this.totalResult = totalResult;
	}

	public int getStartIndex() {
		return startIndex;
	}

	public void setStartIndex(int startIndex) {
		this.startIndex = startIndex;
	}

	public int getItemsPerPage() {
		return itemsPerPage;
	}

	public void setItemsPerPage(int itemsPerPage) {
		this.itemsPerPage = itemsPerPage;
	}

	public Date getStartDate() {
		return startDate;
	}

	public void setStartDate(Date startDate) {
		this.startDate = startDate;
	}

	public Date getEndDate() {
		return endDate;
	}

	public void setEndDate(Date endDate) {
		this.endDate = endDate;
	}

	public String getTableName() {
		return tableName;
	}

	public void setTableName(String tableName) {
		this.tableName = tableName;
	}

	public String getTableId() {
		return tableId;
	}

	public void setTableId(String tableId) {
		this.tableId = tableId;
	}

	public String getWebPropertyId() {
		return webPropertyId;
	}

	public void setWebPropertyId(String webPropertyId) {
		this.webPropertyId = webPropertyId;
	}

	public String getProfileId() {
		return profileId;
	}

	public void setProfileId(String profileId) {
		this.profileId = profileId;
	}

	public String getAccountName() {
		return accountName;
	}

	public void setAccountName(String accountName) {
		this.accountName = accountName;
	}

	public List<String> getDimension() {
		return dimension;
	}

	public void setDimension(List<String> dimension) {
		this.dimension = dimension;
	}

	public List<String> getMetric() {
		return metric;
	}

	public void setMetric(List<String> metric) {
		this.metric = metric;
	}

	public List<AnalyticEntryRow> getEntries() {
		return entries;
	}

	public void setEntries(List<AnalyticEntryRow> entries) {
		this.entries = entries;
	}
}
